package com.simple.component;


import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.text.TextUtils;

import com.billy.cc.core.component.CC;
import com.billy.cc.core.component.CCResult;
import com.billy.cc.core.component.CCUtil;
import com.billy.cc.core.component.IComponent;

/**
 * Copyright (C), 2016-2020,呼我出行网络科技有限公司
 * FileName: ComponentCert
 * Author: Administrator
 * Date: 2020/6/3 10:31
 * Description:组件类,供宿主调用
 * History:
 */
public class ComponentLogin implements IComponent {

    @Override
    public String getName() {
        //指定组件名称
        return ComponentAction.ACTION_LOGIN;
    }

    @Override
    public boolean onCall(CC cc) {
        String actionName = cc.getActionName();
        switch (actionName) {
            case ComponentAction.ACTION_LOGIN:
                if (TextUtils.isEmpty(Global.loginUserName)) {
                    //未登录，打开登录界面，在登录完成后再回调结果，异步实现
//                    Context context = cc.getContext();
//                    Intent intent = new Intent(context, LoginActivity.class);
//                    if (!(context instanceof Activity)) {
//                        //调用方没有设置context或app间组件跳转，context为application
//                        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//                    }
//                    //将cc的callId传给Activity，登录完成后通过这个callId来回传结果
//                    intent.putExtra(CCUtil.EXTRA_KEY_CALL_ID, cc.getCallId());
//                    context.startActivity(intent);
                    CCUtil.navigateTo(cc, LoginActivity.class);
                    boolean returnFlag = cc.getParamItem("return");
                    //ComponentBuy组件设置为立即返回， 即可解决卡顿问题
                    if (!returnFlag) {
                        //异步实现，不立即调用CC.sendCCResult,返回true
                        CC.sendCCResult(cc.getCallId(), CCResult.error("异步回调"));
                    }
                    return true;
                }
                CCResult result = CCResult.success(Global.KEY_USERNAME, Global.loginUserName);
                CC.sendCCResult(cc.getCallId(), result);
                return false;

            default:
                //其它actionName当前组件暂时不能响应，可以通过如下方式返回状态码为-12的CCResult给调用方
                CC.sendCCResult(cc.getCallId(), CCResult.errorUnsupportedActionName());
                return false;
        }
    }
}
